In many instances it is desirable for security reasons to require that a user be authenticated before he or she is allowed to access a resource (e.g., file, application, etc.) of a data-processing system (e.g., a desktop personal computer, a server, a personal digital assistant [PDA], a smartphone, etc). Typically a user is presented with an authentication challenge, and the user must supply a valid response to the challenge. A ubiquitous challenge/response mechanism, colloquially referred to as “logging in,” is to prompt a user for his or her username and password. A disadvantage of this technique, however, is that users often select passwords that can be easily guessed. In addition, passwords can be stolen by spyware or other “malware” that is installed surreptitiously on a user's computer.
Another popular challenge/response mechanism—which is often used as a backup in case a user forgets his or her password—is a secret question (e.g., “What is your mother's maiden name?”, “What was your first telephone number?”, etc.) to which the user provides an answer, a priori. Subsequently, at authentication time, the user is presented with the secret question and must respond with the previously-supplied answer. The efficacy and security of this mechanism relies on using a secret question whose answer is easily remembered by the user, but is unlikely to be known by an imposter. This technique, unfortunately, also suffers from a number of disadvantages: first, the answer to a secret question is typically much easier to guess than a good password; second, it is possible that the information requested is publicly obtainable; and third, security administrators all seem to use the same “classic” secret questions, so that a question compromised on one system likely compromises other systems as well.
Therefore, what is needed is a secure authentication technique that overcomes some of the disadvantages of the prior art.